﻿'Creado por Manuel Chaves

Public Class ModificarNivel

    Dim codigoNivel As Integer


    ''' <summary>
    ''' Instanciacion
    ''' </summary>
    ''' <param name="p_codigo">Codigo del nivel</param>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Public Sub New(ByVal p_codigo As Integer)
        If Logica.Gestor.revisarEliminadoNivel(p_codigo) Then
            Me.Dispose()
        End If
        InitializeComponent()
        cargarDatos(p_codigo)
        codigoNivel = p_codigo
    End Sub

    ''' <summary>
    ''' Valida el formulario.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Function validar() As Boolean
        If Not validarVacio() Then
            alertarVacio()
            Return False
        End If
        If Not validarRangos() Then
            alertarRangos()
        End If
        Return True
    End Function



    ''' <summary>
    ''' Valida los campos vacios en el formulario.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Function validarVacio() As Boolean
        Dim ctrl As Control
        For Each ctrl In Me.Controls
            If ((TypeOf ctrl Is TextBox) Or (TypeOf ctrl Is ComboBox)) Then
                If ctrl.Text.Trim = "" Then
                    Return False
                End If
            End If
        Next
        Return True
    End Function

    ''' <summary>
    ''' Carga los datos en los controles.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub cargarDatos(ByVal p_codigo)
        Dim objNivel As Logica.Nivel
        objNivel = Logica.MultiNivel.obtener(p_codigo)
        txtSalarioMinimo.Text = objNivel.SalarioMinimo
        txtSalarioMaximo.Text = objNivel.SalarioMaximo
    End Sub

    ''' <summary>
    ''' Retroalimentacion de exito.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub alertarExito()
        MsgBox("El nivel se modificó con éxito", MsgBoxStyle.Information, "Éxito")
        Me.Close()
    End Sub

    ''' <summary>
    ''' Llena los datos en los controles.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub alertarError()
        lblMsj.Text = "Ocurrió un error"
        lblMsj.ForeColor = Color.Red
        lblMsj.Visible = True
    End Sub

    Private Sub alertarVacio()
        lblMsj.Text = "Debe llenar todos los campos"
        lblMsj.ForeColor = Color.Red
        lblMsj.Visible = True
    End Sub

    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
        lblMsj.Visible = False
        If Not validar() Then
            Return
        End If
        If Not validarRangos() Then
            alertarRangos()
            Return
        End If
        Try
            Logica.Gestor.actualizarNivel(codigoNivel, txtSalarioMinimo.Text, txtSalarioMaximo.Text)
            'alertarExito()
            Me.Close()
        Catch ex As Exception
            alertarError()
        End Try
        alertarExito()
    End Sub

    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Me.Close()
    End Sub

    Private Sub ModificarNivel_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim objNivel As Hashtable
        objNivel = Logica.Gestor.obtenerNivel(codigoNivel)
        lblDepartamento.Text = Logica.Gestor.obtenerNombreDepartamentoPorCodigo(objNivel("codigoDepartamento"))
        lblNivel.Text = "Nivel " + CStr(objNivel("nivel"))
    End Sub

    ''' <summary>
    ''' Evento cuando se escribe en txtMaximo
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub txtMaximo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSalarioMaximo.KeyPress
        If e.KeyChar = "." Then
            If txtSalarioMaximo.Text.IndexOf(".") > -1 Then
                e.Handled = True
            End If
        ElseIf Char.IsNumber(e.KeyChar) = False AndAlso Char.IsControl(e.KeyChar) = False Then
            e.Handled = True
        End If
    End Sub

    ''' <summary>
    ''' Evento cuando se escribe en txtMinimo
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub txtMinimo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSalarioMinimo.KeyPress
        If e.KeyChar = "." Then
            If txtSalarioMinimo.Text.IndexOf(".") > -1 Then
                e.Handled = True
            End If
        ElseIf Char.IsNumber(e.KeyChar) = False AndAlso Char.IsControl(e.KeyChar) = False Then
            e.Handled = True
        End If
    End Sub

    Private Function validarRangos() As Boolean
        If CType(txtSalarioMaximo.Text, Integer) < CType(txtSalarioMinimo.Text, Integer) Then
            Return False
        End If
        Return True
    End Function


    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub alertarRangos()
        MsgBox("El rango mínimo no puede ser mayor al rango máximo.", MsgBoxStyle.Exclamation, "Error")
    End Sub

End Class